#include "Tool.h"
// 此函数是日常学习的一些库函数比较有意思的用法，用于记录，后续可对本项目的一些功能有所帮助

// 使用popen() 和配合awk，管道等，得到shell命令执行的输出
int getSystemShellReture()
{
    char cmd[128] = "find / -name Polaris";
    char result[128] = {0};

    FILE *fp = NULL;
    fp = popen(cmd,"r");
    if(fp == NULL)
    {
        printf("popen error\n");
        return -1;
    }

    // 读管道，得到输出
    if(fgets(result,sizeof(result),fp) == NULL)
    {
        printf("fgets error\n");
        return -1;
    }
    printf("Location of file : %s\n",result);
    // 是否不关闭，可以下次使用？
    pclose(fp);

    int lastIndex = strlen(result);

    // 需要把最后的换行符替换为字符串结束符，否则下方结合管道时候，会只执行前半段，后半段会有问题
    printf("lastIndex = %ld\n",lastIndex);
    if(result[lastIndex-1] == '\n')
    {
        result[lastIndex-1] = '\0';
    }

    // 输出第五项
    snprintf(cmd,sizeof(cmd),"ls -l %s | awk '{print $5}'",result);
    fp = popen(cmd,"r");
    if(fp == NULL)
    {
        printf("popen error\n");
        return -1;
    }

    // 读管道
    if(fgets(result,sizeof(result),fp) == NULL)
    {
        printf("fgets error\n");
        return -1;
    }
    printf("Info of file : %s\n",result);

    // 转换字符串为数字
    int fileSize = 0;
    sscanf(result,"%d",&fileSize);
    printf("fileSize = %ld,-100 = %ld\n",fileSize,fileSize-100);
    pclose(fp);
    

    return 0;

}